<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 题1.
        //3 + 2 +“7”的结果是什么？3 + (2 + "7")的结果又是什么？这两个表达式输出的值是什么类型？
        // 57 string
        // 327 string
        // 题2.
        //6 - false的结果是什么？
            结果为6
        // 题3.
        //6 - "false"和6 + "false"的结果分别是什么？结果输出值是什么数据类型？
            // NaN Number
            // 6false string
        // 题4.
        //下面代码分别输出什么？请写出分析过程
        
        // 把1赋值给a
        var a = 1;
        // 加加在前本身值+1再去运算--即a=++a=2，后面的a等于前面a=++a的值+1--即后面a=++a+1=2+1=3
        //        2     3
        var b = ++a + ++a;
        // b = 2 + 3 = 5;
        // 输出结果b=5;
        console.log(b);

        //---上面和下面是两段代码---
        // 把1赋值给a
        var a = 1;
        // 加加在后本身值不变去运算--即a=a++=1，后面的a等于前面a+1=1+1=2--即后面a=++a+1=1+1=2
        //      1     2
        var b = a++ + a++;
        // b = 1 + 2 =3
        //输出结果b=3
        console.log(b);

        // 题5.
        //JS中哪些值通过Boolean对象转换出来的值为false
        // 0 "" null undefined NaN

        // 题6.
        //分析下面代码的结果并解释原因。
        var a = 1;
        var b = 2;

        console.log(a && b);//两边类型一样且boolean值都是true，所以结果为true
        console.log(a || b);//两边的boolean值是true，有一边为true时，结果就为true

        // 题7.
        //分析下面代码，分别输出什么？(以注释形式写在console.log后面)

        var str = "12306";
        var str1 = 1;
        var num = 12306;
        var boo = true;

        console.log(str == num);// str是string，num是number，string隐性转化为number，最后两者的值一样，等于就是两者的不考虑类型因素影响，值相同就为true，结果为true 
        console.log(str === num);// str虽然隐性转化为number，str和num的值相同但类型不一样，全等要两个变量的值和类型都一样才为true，否则为false,结果为false
        console.log(str1 == boo);//str1是number，boo为boolean，boo隐性转化为number，最后两者的值一样，等于就是两者的不考虑类型因素影响，值相同就为true，结果为true 
        console.log(str1 === boo);//boo虽然隐性转化为number，str1和boo的值相同但类型不一样，全等要两个变量的值和类型都一样才为true，否则为false,结果为false

        // 题8.
        // 请分析console.log(1 + - + + + - + -1)的结果？
            0
        // 题9.
        //分析下面代码，写出分析过程，请问 j 和 y 分别是多少？(不要运行代码，自己分析后写出答案)

        var i = 100;
        i++;// i=100++=100+1=101
        j = i++;// j=101++=1001
        y = ++j;// y=++101=1+101=101
        console.log(y);//102
        console.log(j);//102


        var a = true && "" && 12306;// true && false && true = false
        var b = false || "" || undefined || 12306 || "bluej";// false || false || false || true =true
        console.log(a);// ""
        console.log(b);// 12306

        // 提高题，非必做
        
        // - 写出执行结果,并解释原因

        var x = 1;// x是number
        // 输出console.log(123)显示为123的number数据类型
        if (function f() { console.log(123);}) {//函数没有调用或返回值时都是undefined

            x += typeof f;
            x += typeof f;////函数没有调用或返回值时都是undefined

        }
        console.log(x)//NaN
    </script>
</body>

</html>